package net.hands.ado.db.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.sql.Types;

import net.hands.ado.db.DBColumn;

@Target({ ElementType.FIELD, ElementType.METHOD /* get */})
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
	/**
	 * 列的显示名
	 * 
	 * @return
	 */
	String text() default "";

	/**
	 * 列的sql名称
	 * 
	 * @return
	 */
	String name() default "";

	/**
	 * 忽略持续化
	 * 
	 * @return
	 */
	boolean ignore() default false;

	/**
	 * 类型
	 * 
	 * @return
	 */
	int type() default Types.VARCHAR;

	/**
	 * 长度
	 */
	int length() default 255;

	/**
	 * 精度
	 */
	int precision() default 19;

	/**
	 * 比例
	 */
	int scale() default 2;

	/**
	 * 是否是主键
	 * 
	 * @return
	 */
	boolean isKey() default false;

	/**
	 * 允许为空
	 */
	String isNullable() default DBColumn.YES;

	/**
	 * 默认值
	 * 
	 * @return
	 */
	String defaultValue() default "";
}
